spring 为什么我的@RequestHeader不传递值?

mnemlml8  于 2024-01-05  发布在  Spring
关注(0)|答案(2)|浏览(180)

我在实习期间正在使用springwebmvc REST API作为一项任务。我遇到了一个问题,无法使用Http Header传递值。我试图使用用户名和密码进行身份验证,但authdto值没有在我的应用程序中初始化。
方法:

  1. @GetMapping(value = "/{username}")
  2. @ApiOperation(value = "fetch Trainee", response = TraineeResponseDTO.class)
  3. @ApiResponses(value = {
  4. @ApiResponse(code = 200, message = "Successfully fetched a trainee"),
  5. @ApiResponse(code = 500, message = "Application failed to process the request")
  6. })
  7. public ResponseEntity<TraineeResponseDTO> getTrainee(@PathVariable String username,
  8. @RequestHeader(value = "Auth-Username") String authUsername,
  9. @RequestHeader(value = "Auth-Password") String authPassword) {
  10. traineeValidation.validateUsernameNotNull(username);
  11. AuthDTO authDTO = new AuthDTO(authUsername, authPassword);
  12. TraineeEntity trainee = traineeService.findByUsername(authDTO, username);
  13. TraineeResponseDTO responseDTO = traineeConverter.convertModelToResponse(trainee);
  14. return new ResponseEntity<>(responseDTO, HttpStatus.OK);
  15. }

字符串
build.gradle

  1. plugins {
  2. id 'java'
  3. id 'jacoco'
  4. id "org.sonarqube" version "4.4.1.3373"
  5. id 'war'
  6. }
  7. group = 'com.nikolabojanic'
  8. java {
  9. sourceCompatibility = '17'
  10. }
  11. sonar {
  12. properties {
  13. property "sonar.projectKey", "spring-rest"
  14. property "sonar.projectName", "spring-rest"
  15. property "sonar.host.url", "http://localhost:9002"
  16. property "sonar.token", ""
  17. property "sonar.jacoco.reportPaths", "build/reports/jacoco/test/jacocoTestReport.xml"
  18. property "sonar.login", "admin"
  19. property "sonar.password", "sonar"
  20. }
  21. }
  22. repositories {
  23. mavenCentral()
  24. }
  25. dependencies {
  26. implementation 'org.hibernate:hibernate-core:6.4.0.Final'
  27. implementation 'org.springframework:spring-orm:6.1.1'
  28. implementation 'org.postgresql:postgresql:42.7.1'
  29. implementation 'org.springframework:spring-webmvc:6.1.2'
  30. implementation 'org.springframework:spring-web:6.1.2'
  31. implementation 'jakarta.servlet:jakarta.servlet-api:6.0.0'
  32. implementation 'javax.servlet:javax.servlet-api:4.0.1'
  33. implementation 'javax.annotation:javax.annotation-api:1.3.2'
  34. implementation 'com.fasterxml.jackson.core:jackson-databind:2.16.0'
  35. implementation 'com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.16.0'
  36. implementation 'io.springfox:springfox-swagger2:3.0.0'
  37. implementation 'io.springfox:springfox-swagger-ui:3.0.0'
  38. implementation 'org.slf4j:slf4j-api:1.7.32'
  39. implementation 'org.slf4j:slf4j-simple:1.7.32'
  40. implementation 'org.junit.jupiter:junit-jupiter-engine:5.10.1'
  41. compileOnly 'org.projectlombok:lombok:1.18.30'
  42. annotationProcessor 'org.projectlombok:lombok:1.18.30'
  43. testCompileOnly 'org.projectlombok:lombok:1.18.30'
  44. testAnnotationProcessor 'org.projectlombok:lombok:1.18.30'
  45. testImplementation 'org.springframework:spring-test:6.1.0'
  46. testImplementation 'org.junit.jupiter:junit-jupiter-api:5.10.1'
  47. testImplementation 'org.mockito:mockito-core:5.7.0'
  48. testImplementation 'org.mockito:mockito-junit-jupiter:5.7.0'
  49. testImplementation 'org.apache.commons:commons-lang3:3.14.0'
  50. }
  51. test {
  52. useJUnitPlatform()
  53. finalizedBy jacocoTestReport
  54. }
  55. jacocoTestReport {
  56. dependsOn test
  57. reports {
  58. xml.required = true
  59. }
  60. }


enter image description here我从头文件中硬编码了相同的用户名和密码值,以在应用程序中初始化我的authDTO,我的身份验证逻辑工作正常。我认为问题在于我根本没有从头文件中阅读值。

biswetbf

biswetbf1#

你试过写@RequestHeader("Auth-Username")而不是@RequestHeader(value = "Auth-Username")吗?
或许会有帮助。
也看看this topic,也许它会有用。

3vpjnl9f

3vpjnl9f2#

按照spring documentation:你可以这样写请求头注解:

  1. public ResponseEntity<TraineeResponseDTO> getTrainee(@PathVariable String username,
  2. @RequestHeader("Auth-Username") String authUsername,
  3. @RequestHeader("Auth-Password") String authPassword) {

字符串
它将解决这个问题。快乐编码...!!:)

相关问题