在获取调用 API rest 中定义路径



我有一个关于电影的 api。我想按"名称"搜索电影。我应该如何定义路径?路径参数错误。它说它无法解决它。

@GET
@Path("/search?text=name")
@Produces(MediaType.APPLICATION_JSON)
public Response getMovieByName(@Context HttpServletRequest req, 
@PathParam("name") String name) {
if (!checkLoggedIn(req)) {
    throw new WebApplicationException("User not logged.");
}
    return buildResponse(movieService.getMovieByName(name));
}

这是查询参数,而不是路径参数。不应在路径中包含查询参数。当客户发送时,它们将交给您:

@Path("/search")

您需要更改的是用于将参数注入方法的注释(使用 @QueryParam(:

public Response getMovieByName(@Context HttpServletRequest req, 
       @QueryParam("name") String name)

如果使用类似 /search/?name=moviename 的内容调用服务,则将在 name 参数中发送名称值

如果你使用带有注释的 spring 很容易

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class RequestController {
    @RequestMapping("/search")
    public Movie search(@RequestParam(value="name", defaultValue="hello") String name) {
        // search and return movie
    }
}
请求

控制器只是拦截请求并映射到正确的路径,如/search/add。实现通常位于服务层。然后你可以很容易地注入它。

调用很简单

http://localhost:8080/search?name=XMan

欲了解更多信息

相关内容

  • 没有找到相关文章

最新更新