質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

Spring Boot

Spring Bootは、Javaのフレームワークの一つ。Springプロジェクトが提供する様々なフレームワークを統合した、アプリケーションを高速で開発するために設計されたフレームワークです。

Q&A

0回答

691閲覧

Spring Boot POSTで現時刻での指定方法(REST API作成)

izimeyameyou

総合スコア2

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

Spring Boot

Spring Bootは、Javaのフレームワークの一つ。Springプロジェクトが提供する様々なフレームワークを統合した、アプリケーションを高速で開発するために設計されたフレームワークです。

0グッド

0クリップ

投稿2021/03/11 01:33

編集2021/03/11 01:35

Spring Bootを使用してSNSのようなアプリの開発を進めています。
POSTで値を入れてと送信すると、DBに登録されるAPI作成について取り組んでいるのですが、
ユーザーが新規登録した時間をフィールド変数に入れる方法とpostで送信するときのJsonの指定方法が分かりません。
下記はコードです。

UserServiseクラス

Java

1//パッケージ省略 2import java.util.List; 3import javax.transaction.Transactional; 4import org.springframework.beans.factory.annotation.Autowired; 5import org.springframework.stereotype.Service; 6@Service 7@Transactional 8public class UserServise { 9 @Autowired 10 UserRepository userRepository; 11 12 public List<User> getUsers(){ 13 return userRepository.findAll(); 14 } 15 16 public User postUser(User user) { 17 UserInput userInput = new UserInput(); 18 User u= new User(); 19 u.setCreated_at(userInput.getTimestampCreated_at()); 20 return userRepository.save(user); 21 } 22} 23

UserControllerクラス

Java

1//パッケージ省略 2import java.util.List; 3import org.springframework.beans.factory.annotation.Autowired; 4import org.springframework.web.bind.annotation.GetMapping; 5import org.springframework.web.bind.annotation.PostMapping; 6import org.springframework.web.bind.annotation.RequestBody; 7import org.springframework.web.bind.annotation.RequestMapping; 8import org.springframework.web.bind.annotation.RestController; 9 10@RestController() 11@RequestMapping("/xxxxx") 12public class UserController { 13 @Autowired 14 UserServise userServise; 15 16 @GetMapping 17 List<User> getUsers(){ 18 return userServise.getUsers(); 19 } 20 @PostMapping 21 User postUser(@RequestBody User user) { 22 return userServise.postUser(user); 23 } 24}

UserRepositoryクラス

Java

1//パッケージ省略 2import org.springframework.data.jpa.repository.JpaRepository; 3public interface UserRepository extends JpaRepository<User, Integer>{ 4}

Userクラス

Java

1//パッケージ省略 2import java.sql.Date; 3import java.sql.Timestamp; 4import javax.persistence.Column; 5import javax.persistence.Entity; 6import javax.persistence.GeneratedValue; 7import javax.persistence.GenerationType; 8import javax.persistence.Id; 9import javax.persistence.Table; 10import lombok.AllArgsConstructor; 11import lombok.Data; 12import lombok.NoArgsConstructor; 13 14@Entity 15@Data 16@NoArgsConstructor 17@AllArgsConstructor 18@Table(name = "Users") 19public class User { 20 21 @Id 22 @GeneratedValue(strategy = GenerationType.IDENTITY) 23 @Column(nullable = false) 24 private int user_id; 25 26 @Column(length = 200,nullable = false) 27 private String email; 28 29 @Column(length = 100,nullable = false) 30 private String name; 31 32 @Column(length = 100) 33 private String self_introduction; 34 35 @Column(length = 2055) 36 private String profile_picture; 37 38 @Column(nullable = false) 39 private Timestamp created_at; 40 41 42

UserInputクラス

Java

1import java.sql.Timestamp; 2 3public class UserInput { 4 5 private Timestamp timestampCreated_at = new Timestamp(System.currentTimeMillis()); 6 7 public Timestamp getTimestampCreated_at() { 8 return timestampCreated_at; 9 } 10}

APIの確認方法についてはAdvanced REST clientを使用しています。
①created_atにはapiを叩いた時間を入れたいです。そのためPOSTで送信する際に、値をこちらで入力するのではなく、時刻の変数をUserクラスのsetCreated_atで指定してしまえばいいと考えました。そのため、TimeStampのインスタンスを作成し現時刻を変数にいれ、それを代入する処理しています。(serviseクラスとInputUserクラス) この方法ではいまのところうまくいきません。もしかすると後述する②が原因でそもそも動かない気がしますが、この時点で間違いがあればご指摘いただきたいです。

②全てがこちら側で入力して済むときは下記のようにPOSTメソッドで送れば済みます。(Advanced REST clientでPOST送信するときのJsonのコード)

Json

1{ 2 "user_id":1, 3 "email":"posttest", 4 "name":"namae", 5 "self_introduction":"hello", 6 "profile_picture":"picturepicture", 7 "created_at":"2017-07-01T14:59:55.711Z" 8 9}

しかし、created_atは既値が叩いた状態で入っている想定です。この場合ここでの指定方法が分かりません。updated_atの行を消したり、値が入っている部分を空欄にしたりしましたが、うまくいきません。ご教授いただければ幸いです。

created_at関連での現時刻でのインスタンス作成をせずに、上記のような具体的な値を入れたらしっかりPOSTはできましたので、記述した中で間違いがあると考えられます。
何卒よろしくお願い申し上げます。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問