私は JBoss、Spring、Hibernate などを使用している REST API を継承しました。これらはすべて初めてなので、(私にとって)ばかげた質問のように思われることをお許しください。
GET を実行するときの基本的な流れは、エンティティ リストを作成し、それを ModelAndView オブジェクトに追加してから返すことです。
質問: 計算値を応答に追加するにはどうすればよいですか?
計算された値をデータベースに保存したくありません。また、返される各エンティティにメンバーを追加したくもありません (つまり、ArrayList<Athletes>
「リーダーの背後にあるポイント」メンバーを Athletes クラスに追加します)。リクエストごとに計算を実行し、次のようにその動的な値を使用して json レスポンスにメンバーを追加するだけです。
{
"Athlete1" : {"name" : "bob", "someDynamicValue" : "124548412" }
}
これは比較的一般的なようですが、簡単な解決策が見つからないようです.....おそらく、質問を正しくする方法がわからないだけです。
どんな助けでも大歓迎です。
PS - これは、Rest API で Spring を使用してエンティティを返すのに役立つと思いましたが、応答に動的な値を追加する方法についての質問には答えませんでした。
編集:リクエストごとに、ここにいくつかの簡略化されたコードがあります
public ModelAndView getAthletes(HttpServletRequest req, HttpServletResponse res)
throws WebServiceException {
res.setContentType("text/xml");
List<AthleteStat> athleteStats = athleteManager.getAthleteStats();
Map<String, Object> model = new HashMap<String, Object>();
model.put("athleteStats", athleteStats);
ModelAndView modelAndView = new ModelAndView("athletes.ftl", "model", model);
modelAndView.setCacheable(true);
return modelAndView;
}
public class AthleteStat{
private Long id;
private String name;
private String hometown;
private String resides;
private Date birthdate;
//getters and setters
}
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<#escape x as x?xml>
<response status="ok">
<Data>
<Athletes>
<#list model.athleteStats as athleteStat>
<Athlete Name="${athleteStat.athlete.name}" InternalID="${athleteStat.athlete.id?c}">
<AbbrevName><#if athleteStat.athlete.abbrevName?exists>${athleteStat.athlete.abbrevName}</#if></AbbrevName>
<Birthdate><#if athleteStat.athlete.birthdate?exists>${athleteStat.athlete.birthdate?string("yyyy-MM-dd'T'HH:mm:ss")}</#if></Birthdate>
<Hometown><#if athleteStat.athlete.hometown?exists>${athleteStat.athlete.hometown}</#if></Hometown>
<Resides><#if athleteStat.athlete.resides?exists>${athleteStat.athlete.resides}</#if></Resides>
<Age><#if athleteStat.athlete.age?exists>${athleteStat.athlete.age}</#if></Age>
</Athlete>
</#list>
</Athletes>
</Data>
</response>
</#escape>