我正在嘗試通過資料庫(H2)中的 CNPJ(巴西公司納稅人注冊號)查找一家公司,但它回傳錯誤
{
"timestamp": "2022-03-30T19:30:23.823 00:00",
"status": 404,
"error": "Not Found",
"path": "/companies/cnpj/30101554000146"
}
我嘗試過使用其他替代方法:
http://localhost:8080/companies/cnpj/'30.101.554/0001-46', http://localhost:8080/companies/cnpj/"30.101.554/0001-46",
但錯誤仍然存??在。我是這樣實作的:
@Entity
@Table(name = "company")
public class Company implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
@CNPJ
private String cnpj;
//skipped
}
public interface CompanyRepository extends JpaRepository<Company,Long> {
Optional<Company> findByCnpj(String cnpj);
}
public class CompanyDTO {
private Long id;
private String name;
private String cnpj;
//skipped
}
@Service
@Transactionalpublic class CompanyService {
@Autowired
private CompanyRepository companyRepository;
@Transactional(readOnly = true)
public CompanyDTO findById(Long id) {
Company resultado = companyRepository.findById(id).get();
CompanyDTO dto = new CompanyDTO(resultado);
return dto;
}
@Transactional(readOnly = true)
public CompanyDTO findByCnpj(String cnpf) {
Optional<Company> resultado = companyRepository.findByCnpj(cnpf);
CompanyDTO dto = new CompanyDTO(resultado.get());
return dto;
}
}
@RestController
@RequestMapping(value = "/companies")public class CompanyController {
@Autowired
private CompanyService companyService;
@GetMapping(value = "/{id}")
public CompanyDTO findById(@PathVariable Long id) {
return companyService.findById(id);
}
@GetMapping(value = "/cnpj/{cnpj}")
public CompanyDTO findByCnpj(@PathVariable String cnpj) {
return companyService.findByCnpj(cnpj);
}
}
預期的輸出將是:
[
{"id": 1,
"nome": "Company 123",
"cnpj": "30.101.554/0001-46"
}
]
更新:
我將 @GetMapping(value = "/cnpj/{cnpj}") 更改為 @GetMapping(value = "/cnpj/**") 并且:
@GetMapping(value = "/cnpj/**")
public CompanyDTO findByCnpj(HttpServletRequest request) {
return companyService.findByCnpj(request.getRequestURI().split(request.getContextPath() "/cnpj/")[1]);
}
為我作業!謝謝
uj5u.com熱心網友回復:
正如這里所解釋的,pathParams在使用 spring-boot 時,斜線可能非常棘手。這篇文章很好地解釋了如何避免error 404在你pathVariable有斜線時得到一個。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/454152.html
