How to get posts by category at /%category%/ url?

Is the archive.php correct template for that?

archive.php is the most common file to load any kind of archive posts. But anytime the user loads a category archive page, WordPress template system looks for files in this order:

category-slug.php → category-id.php → category.php → archive.php → index.php

If you want to create a specific template for news category, you should use one of the following:

category-news.php: will work only for the news category

category.php: will work for all categories

To get the list of posts under News category, you should use the following code:

<?php if(have_posts()) : ?>

    <h1 class="archive-title">Category: <?php single_cat_title( '', false ); ?></h1>

<?php while(the_posts()) : the_post(); ?>

    <h2 class="post-title"><?php the_title(); ?></h2><br />
    <div class="post-content"><?php the_content(); ?></div>

<?php endwhile; ?>

<?php endif; ?>

For detailed information about category templates, I recommend you to read this article.