0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

API呼ぶ【コール編】

Last updated at Posted at 2019-12-26

##API呼ぶ

以下4つのパートに分かれています。(〇〇編は適当につけましたゆるして)
API呼ぶ【準備編】
API呼ぶ【コア編】
API呼ぶ【ハンドリング編】
API呼ぶ【コール編】

##コール編
前回までで、Facadeを呼べばAPI関連の処理まとめてやってくれるように作れました
じゃあFacade呼ぼう

service.java
package service;

import exception.NantokaApiBadResultException;
import exception.NantokaApiUnknownException;
import facade.Facade;
import model.RequestBody;
import model.RequestDto;
import model.ResponseBody;
import model.ResponseDto;

public class Service {
	
	/** APIFacade */
	private static Facade facade = new Facade();
	
	public static void main(String[] args) {
		System.out.println(service(""));
	}

	public static String service(String str) {
		
		// ロジック
		
		RequestBody body = new RequestBody();
		body.setId("28");
		body.setName("なんとかさん");
		body.setInfo("おなかすきました");
		
		RequestDto request = new RequestDto();
		request.setRequest(body);
		
		try {
			// API実行
			ResponseDto response = facade.nantokaApiFacade(request);
			ResponseBody responseBody = response.getBody();
			return responseBody.getInfo() + responseBody.getComment();
			
		} catch (NantokaApiUnknownException e) {
			return e.getMessage();
			
		} catch (NantokaApiBadResultException e) {
			return e.getMessage();
		}
	}
}

エラーがシンプルでいいですね
FacadeでExceptionでくくったものと、処理結果がnullの場合を一つのエラーにまとめることができています
あとは結果が正常じゃない場合のエラーをとっています
結果の種類に応じて処理分けたかったら、Exceptionを増やして分岐させていけば対応できますね

##まとめ
★Client(コア層)はただたんにAPIたたくだけ
★Facade(ハンドリング層)でExceptionを好きなように吐かせる
★Service(コール層)で、分岐した時の処理を実装

なかなか綺麗なんじゃないでしょうか!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?