gpt4 book ai didi

java - swagger-ui 中的 OPTIONS、HEAD、PATCH 方法,但 RestController 中没有

转载 作者:行者123 更新时间:2023-12-02 10:42:58 25 4
gpt4 key购买 nike

我是 Swagger 的新手,我已经实现了一个 SwaggerConfig 类和一个 RestController。在我的 RestController 中,我只实现了 GET、POST、PUT、DELETE,但是 swagger 还生成了 OPTIONS 和 HEAD 的方法?这是什么原因呢?它们总是默认从 Swagger 生成吗?这些方法产生的原因是什么?提前致谢。

@RestController
public class TimesheetRequestController {


@Autowired
TimesheetRepository timeRepo;


@RequestMapping("/timesheets")
public List<Timesheet> getTimesheets() {

List<Timesheet> results = new ArrayList<>();
timeRepo.findAll().forEach(results::add);

return results;
}

@PostMapping("/timesheets")
@ApiParam(type="Timesheet")
public ResponseEntity<Object> createTimesheetEntry(@RequestBody Timesheet timesheet) {

Timesheet savedTimesheet = timeRepo.save(timesheet);

URI location = ServletUriComponentsBuilder.fromCurrentRequest().path("/{id}")
.buildAndExpand(savedTimesheet.getId()).toUri();

return ResponseEntity.created(location).build();
}

@PutMapping("/timesheets")
public ResponseEntity<Object> getTimesheetEntry(@RequestBody Timesheet timesheet, @PathVariable long id) {

Optional<Timesheet> timesheetOptional = timeRepo.findById(id);

if (!timesheetOptional.isPresent())
return ResponseEntity.notFound().build();

timesheet.setId(id);

timeRepo.save(timesheet);

return ResponseEntity.noContent().build();

}

@GetMapping("/timesheets/{id}")
public Timesheet getTimesheetEntry(@PathVariable long id) {

Optional<Timesheet> timesheet = timeRepo.findById(id);

if (!timesheet.isPresent())
throw new TimesheetNotFoundException("id-" + id);

return timesheet.get();

}

@DeleteMapping("/timesheets/{id}")
public void deleteTimesheetEntry(@PathVariable long id) {
timeRepo.deleteById(id);

}



}

Swagger UI

这是我的 Swagger 配置:

@Configuration
@EnableSwagger2
public class SwaggerConfig {

@Bean
public Docket api() {
return new Docket(DocumentationType.SWAGGER_2)
.select()
.apis(RequestHandlerSelectors.basePackage("package_name"))
.paths(PathSelectors.any())
.build();
}
}

最佳答案

像这样改变你的函数。

@RequestMapping(path="/timesheets",method=RequestMethod.GET)
public List<Timesheet> getTimesheets() {

List<Timesheet> results = new ArrayList<>();
timeRepo.findAll().forEach(results::add);

return results;
}

甚至将其更改为@GetMapping("/timesheets")

这个与这个类似issue .

关于java - swagger-ui 中的 OPTIONS、HEAD、PATCH 方法,但 RestController 中没有,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52802305/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com