当前位置: 首页 > 知识库问答 >
问题:

如何创建Spring Boot控制器

卫胜
2023-03-14

连接:Keep-Alive

主机:webhook.site

内容类型:application/x-www-form-urlencoded

@RequestMapping(value = "/bills", method = RequestMethod.POST, headers = "Accept=application/x-www-form-urlencoded")
    @ResponseBody
    @Transactional
    public void createBill(UriComponentsBuilder uriComponentsBuilder, final HttpServletRequest request,
            final HttpServletResponse response) throws IOException {
}

共有1个答案

欧阳高昂
2023-03-14

这对我来说不是很清楚,但是如果您使用spring boot,您当然可以创建控制器、服务和存储库或DAO。实际上,您的控制器将调用您的服务女巫将调用存储库。

让我们假设您有一个调用API的客户端。

因此该调用看起来如下:

// Suppose that is a spring boot project

Class A {

@Autowired 
RestTemplate restTemplate;

public void create(){

    HttpHeaders headers = new HttpHeaders();
    headers.setAccept(Arrays.asList(MediaType.APPLICATION_JSON));
    headers.setContentType((MediaType.APPLICATION_JSON));
    headers.add("X-yourCustom-context", "yourCustom");

    UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl(your_service_url)
                    .queryParam("params1", "value".queryParam("params2", value2));
    HttpEntity<?> entity = new HttpEntity<>(headers);

    restTemplate.exchange(builder.build().encode().toUri(), HttpMethod.POST, entity, null); // if you want to return an objectr you put it rather than the null

}

}
@RestController
public class YourController {
    @Autowired
    private YourService service;

    @Autowired
    private ObjectMapper objectMapper;


    @PostMapping(value = "/bills")
    //@ResponseBody if you do not return any think you can not use it
    // @CrossOrigin if you want to call your reste from an external project like javascript or angular
    //@Transactional you can put it on the top of your service methode
    public void createBill(@RequestParam(value = "params1", required = true) String params1, 
    @RequestParam(value = "params2", required = true) String params2,
    @RequestHeader(value = "X-yourCustom-context", required = true) String yourContxt) throws IOException {

    // You can then convert your x-context to an object that you have already by using objectMapper.readValue
    // Finaly you call you service to create the bill and you passe as params what you get fron the client 
}
}
 类似资料:
  • 假设我有很多团队,比如:“团队A,团队B…团队Z”,每个团队至少有5个组件。现在我想创建一个通用控制器,它可以响应任何类型的请求,这样我就可以获得关于团队成员的信息。 例如,我的控制器必须能够映射此请求: 团队课程可以是: 而且 显然它既可以执行也可以执行,重点是我不想为每个团队和每个数字指定一个控制器,我只想要一个可以响应的控制器。 我还需要指定它可以接受的字符串和值的范围(例如,最大值为5)。

  • 控制器文件位置 /_ 分组目录(如 /app) |_ controllers |_ 在此文件夹内创建控制器 控制器文件命名 [ 只支持字母 + 数字 ] 控制器名称.php 控制器代码编写规范 自定义控制器必须继承 grace 基础控制器! <?php class 控制器名称Controller extends grace{ //方法定义 publ

  • 问题内容: 我将所有AngularJS控制器都放在一个文件controllers.js中。该文件的结构如下: 我想做的是将Ctrl1和Ctrl2放入单独的文件中。然后,我会将这两个文件都包含在index.html中,但是应该如何构造呢?我尝试做这样的事情,它在网络浏览器控制台中引发错误,提示找不到控制器。有什么提示吗? 问题答案: 文件一: 文件二: 文件三: 按该顺序包括。我推荐3个文件,因此模

  • 我明白,对于处理器,我只需在文件夹下的中编写代码,然后从中创建一个nar文件。但是在控制器服务的情况下,我有4个文件夹生成。我可以看到两个java文件。 > 显示在文件夹下 显示在文件夹下 现在,为什么在自定义控制器服务的情况下生成两个java文件,而在自定义处理器的情况下只生成一个java文件。另外,由于我试图模仿服务,其中的java文件中有两个我应该复制服务的原始源代码。 请从头开始指导我创建

  • 我需要从以下url开始:http://localhost:8080/home/filter?projectid=1;fileid=1 并创建此控制器: 我不知道该怎么办..

  • 我的所有AngularJS控制器都在一个文件controllers.js中。该文件的结构如下: 我想做的是将Ctrl1和Ctrl2放入单独的文件中。然后,我会在index.html中包含这两个文件,但该如何结构化呢?我试着做这样的事情,它在web浏览器控制台中抛出一个错误,说它找不到我的控制器。有什么提示吗? 我搜索了StackOverflow并发现了这个类似的问题--然而,这个语法在Angula