Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java swagger ui中的选项、头部、修补方法,但不在RestController中_Java_Spring_Swagger_Swagger Ui - Fatal编程技术网

Java swagger ui中的选项、头部、修补方法,但不在RestController中

Java swagger ui中的选项、头部、修补方法,但不在RestController中,java,spring,swagger,swagger-ui,Java,Spring,Swagger,Swagger Ui,我在使用Swagger方面是新手,我已经实现了一个SwaggerConfig类和一个RestController。 在我的RestController中,我只实现了GET、POST、PUT和DELETE,但swagger也为OPTIONS和HEAD生成了方法?原因是什么? 默认情况下,它们总是由Swagger生成的吗?产生这些方法的原因是什么? 提前谢谢 @RestController public class TimesheetRequestController { @Autowired

我在使用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);

}



}

像这样改变你的功能

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

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

    return results;
}
@RequestMapping(path=“/timesheets”,method=RequestMethod.GET)
公共列表getTimesheets(){
列表结果=新建ArrayList();
timeRepo.findAll().forEach(结果::add);
返回结果;
}
或者甚至将其更改为
@GetMapping(“/timesheets”)


这一个与此类似。

尽管它被称为REST,这是指4种基本操作,但REST客户端也通常使用HEAD和OPTIONS方法。因此,Swagger也会自动列出处理这些http方法的控制器方法

由于您尚未为此控制器方法定义任何方法参数:

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

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

    return results;
}
@RequestMapping(“/timesheets”)
公共列表getTimesheets(){
列表结果=新建ArrayList();
timeRepo.findAll().forEach(结果::add);
返回结果;
}
。。。所有未被任何其他控制器方法接受的请求(因为更严格的匹配参数)都将重定向到此处。所以斯威格会列出它们


如果您不想允许HEAD和OPTIONS,那么将
@RequestMapping(“/timesheets”)
更改为
@GetMapping(“/timesheets”)

将其更改为GetMapping,现在可以使用了。太多了
@RequestMapping("/timesheets")
public List<Timesheet> getTimesheets() {

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

    return results;
}