2016-05-14 11 views
0

私はREST APIを書く方法を学んでいます!残りの呼び出しを使用して、フォーム値をテキストファイルに保存するにはどうすればよいですか?残りを使用してフォームデータをファイルに格納していますか?

index.htmlを

<form action="rest/product/adddata" method="post"> 
    Enter Id:<input type="text" name="id"/><br/><br/> 
    Enter Name:<input type="text" name="name"/><br/><br/> 
    Enter Price:<input type="text" name="price"/><br/><br/> 
    <input type="submit" value="Add Product"/> 
</form> 

service.java

@Path("/product") 
public class ProductService{ 
    @POST 
    @Path("/adddata") 
    public Response addUser( 
     @FormParam("id") int id, 
     @FormParam("name") String name, 
     @FormParam("price") float price) { 

     return Response.status(200) 
      .entity(" Product added successfuly!<br> Id: "+id+"<br> Name: " + name+"<br> Price: "+price) 
      .build(); 
    } 
} 

私は、ファイルにidnamepriceの値を追加します。ファイルにデータを追加するための関数はどこに書く必要がありますか? SAVEFILEに

public Response addUser( 
     @FormParam("id") int id, 
     @FormParam("name") String name, 
     @FormParam("price") float price) { 
     saveFile(id,name,price); 

     return Response.status(200) 
      .entity(" Product added successfuly!<br> Id: "+id+"<br> Name: " + name+"<br> Price: "+price) 
      .build(); 
    } 

書き込みコードに

+0

あなたは 'addUser()'メソッドの中でファイルに書き込むべきです。コードを直接そこに追加することもできますし、重い作業を行うヘルパーメソッドを呼び出すこともできます。 –

答えて

0

書き込みコードを書き込み、ファイルから読み込むことができ、別のクラスを作成することになりますこれを行うために、ファイル

0

に最適なアプローチを保存します。そして、そのクラスをこの休憩のエンドポイントに注入します。

残りのエンドポイントクラスの直接のコードは

class FormSynchronizer { 
    public static final File FORM_BASE = new File(...); // The location of directory which will contain all these files 

    public void storeFile(Map map, String fileName){ 
     File toStoreFile = new File(FORM_BASE, fileName); 
     /* Write code to store file */ 
    } 
} 

地図を変換するために、残りのエンドポイントクラス

public class ProductService{ 

    @Inject FormSynchronizer formSynchronizer; 

    @POST 
    @Path("/adddata") 
    public Response addUser( 
     @FormParam("id") int id, 
     @FormParam("name") String name, 
     @FormParam("price") float price) { 

     Map<String, Object> data = new HashMap<>(); 
     data.put("id", id); 
     /* put all data you want to store in this map */ 
     formSynchronizer.storeForm(data, "FORM_" + new Date().getTime()); // I used current time prefixed with 'FORM_' string as file name 

     return Response.status(200) 
      .entity(" Product added successfuly!<br> Id: "+id+"<br> Name: " + name+"<br> Price: "+price) 
      .build(); 
    } 
}  

使用ジャクソンのこのクラスを注入したファイルを書き込むためのない要求を処理するためにする必要がありますのでオブジェクトをJSONファイルに変換したり、逆もあります。
map to/from json file

+0

これは素晴らしいですが、私はすでにサーバー上にファイルを持っています。私はちょうどそれにデータを追加したい。そして、私が保管したいデータは、キーの値のペアではなく、ただの値です。 1、somename、123 –

+0

のように私はあなたにこれをどうやってできるのかを示しました。 'storeFile'メソッドで必要なことを何でもして、それを必要に応じて変更することができます。要は、別のクラスを作成してデータを保存または追加するコードを記述する必要があることです。実際には、XMLファイルにデータを保存するように指示しておいたはずです。データを保存する最も一般的な方法です。 – afzalex

関連する問題