Java + Spring bootでコントローラー備忘録(Laravelとの違いも交えて)

目次

Controller概要

ある程度の誤差はあると思うのですが、現在の理解でLaravelとSpring-Bootの違いをまとめてみました。

  • RestController
  • PHPにはRouterがある

Java

@RestController
public class HelloController {

    @RequestMapping("/{num}")
    public String index(@PathVariable int num){
        int res = 0;
        for(int i = 1; i <= num;i++){
            res += i;
        }
        return "total:" + res;
    }

}

PHP

下記のコマンドでコントローラーが作成される

php artisan make:controller Controller名

Controller.php

<?php

public function index($num){
     $res = 0;
      for(i$i = 1; $i <= $num;$i++){
            $res += i;
       }
      return "total: ".$res;
}

?>

api.php

<?php

Route::resource('/{num}','Controller');

?>

@RestController

Restfull

  • 分散システムアーキテクチャ
  • 外部のサーバーにアクセスして必要な情報を取得するのに使用される
  • 出力ページ:HTMLではなくテキスト(jsonなど)

@RequestMapping

  • リクエストする際にしようするパスの指定

@PathVariable

  • Path変数
  • Pathについている変数を使用する

json形式で出力するRestfullなコントローラー

  • @RestControllerでは、出力形式をjsonに自動変換してくれる
  • Laravelだとresponse()->json($var)でかなり楽だけど、同じようなことができる

Java

@RestController
public class HelloController {

    String[] names = {"makoto","suzuki","nakazawa"};
    String[] mails = {"k@gmail","y@gmail","a@gmail"};

    @RequestMapping("/{id}")
    public DataObject index(@PathVariable int id){
        return new DataObject(id,names[id],mails[id]);
    }

}


//jsonの項目となるデータを管理
class DataObject {
    private int id;
    private String name;
    private String value;
    :

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }
}

HTMLファイルを出力するコントローラー

  • @RestController
    • テキストデータ
  • @Controller
    • htmlファイルなど
@Controller
public class TempleteController {

    @RequestMapping("/index1")
    public String index1(){
        return "index1";
    }

}
  • index.htmlファイルが存在する

まとめ

  • @RestControllerはapi.php+controller
  • @Controllerはweb.php+controller

というイメージ