我正在嘗試創建 Springboot Get API 端點,但出現 404 not found 錯誤'這是我的代碼
組態檔.java
@Getter
@Setter
public class Profile {
private String slackUsername;
private Boolean backend;
private Integer age;
private String bio;
組態檔控制器
@RestController
public class ProfileController {
@Autowired
private Profile profile;
@GetMapping(path = "/profile")
private ResponseEntity<String> userInfo(){
profile.setSlackUsername("Ajava");
profile.setBackend(true);
profile.setAge(00);
profile.setBio("My name is Anakhe Ajayi, I'm learning Java everyday and I love Jesus");
return ResponseEntity.ok(profile.toString());
}
主要的
@SpringBootApplication
@ComponentScan("com/ajavacode/HNGBackendStage1/api.profile")
public class HngBackendStage1Application {
public static void main(String[] args) {
SpringApplication.run(HngBackendStage1Application.class, args);
}
}

門戶網站

uj5u.com熱心網友回復:
請像這樣修復@ComponentScan注釋中的值,然后重試。
@SpringBootApplication
@ComponentScan(basePackages = "com.ajavacode.HNGBackendStage1")
public class HngBackendStage1Application {
public static void main(String[] args) {
SpringApplication.run(HngBackendStage1Application.class, args);
}
}
課堂上也有一個問題,你是里面ProfileController的自動布線課。ProfileProfile 類不是 bean,所以這是不正確的,并且 userInfo() 方法是私有的,它應該是公共的。這里是固定版本。
@RestController
public class ProfileController {
@GetMapping(path = "/profile")
public ResponseEntity<String> userInfo(){
Profile profile=new Profile();
profile.setSlackUsername("Ajava");
profile.setBackend(true);
profile.setAge(00);
profile.setBio("My name is Anakhe Ajayi, I'm learning Java everyday and I love Jesus");
return ResponseEntity.ok(profile.toString());
}
uj5u.com熱心網友回復:
您必須檢查代碼中的一些專案;
- 確保您發送請求的端點是正確的。
- 在控制器中添加@RequestMapping("Profile") 以避免重復端點并減少歧義
- 確保你的 pom 是正確的
uj5u.com熱心網友回復:
查看您的代碼,有幾件事需要提及。
首先,您的包結構看起來不錯(除了我個人會將所有內容保持小寫這一事實之外)。
使用現有的包結構,您實際上根本不需要任何@ComponentScan注釋。默認情況下,主類中的注釋@SpringBootApplication會掃描以該類的包作為基礎包的組件。因此,如果您想顯式掃描其他包中的組件(例如,在更高級別或如果您想跳過層次結構中的包),您只需要設定一些內容。
接下來是控制器。這里的問題是:你真正想要實作什么?
我假設您要構建一個應用程式,該應用程式提供一個GET /profile回傳回應物件的端點,如下例所示:
{
"slackUsername": "alice",
"backend": false,
"age": 42,
"bio": "I'm just an example"
}
如果我的理解是正確的,那么至少有一件事有點奇怪:目前,您定義了一個控制器,它將回傳Profile物件的字串表示形式。這不一定是上面示例中所示的內容。如果您不覆寫該toString()方法,結果將類似于com.ajavacode.HNGBackendStage1.api.Profile@6d06d69c(例如,請參閱此 Baeldung 文章)。即使您使用 Lombok@Data或@ToString注釋,結果也不會是 JSON 或 XML 表示,而是適合記錄的東西,例如。
Spring 已經將序列化為 JSON(或 XML)格式。在您的控制器中,您可以只回傳Profile物件,或者,一個ResponseEntity<Profile>:
@GetMapping(path = "/profile")
public Profile userInfo(){
Profile profile=new Profile();
profile.setSlackUsername("Ajava");
profile.setBackend(true);
profile.setAge(00);
profile.setBio("My name is Anakhe Ajayi, I'm learning Java everyday and I love Jesus");
return profile;
}
上面的示例將使用組態檔作為回應正文和 HTTP 狀態代碼 200 OK 創建一個回應。如果您使用ResponseEntity,您還可以調整 HTTP 狀態代碼,但在您的情況下,這可能不是必需的(還)。
Profile如前所述,自動裝配類也不正確。您只需要自動裝配類 bean,即用 、 或 注釋@Component的@Service類@Repository。您“自動裝配”的類只是代表一些“資料物件”的 POJO 類,沒有提供任何型別的業務邏輯。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/524260.html
標籤:爪哇弹簧靴api休息
