handler IImageConverter IImageStorage IGroupRepository LineNotifyMesse ngerApp S3ImageStorage JimpImageConvert er LineService DynamoGroupRep ository use use use IHttpRequestHandler LambdaHttpReque stHandler
IImageConverter IImageStorage IGroupRepository LineNotifyMesse ngerApp S3ImageStorage JimpImageConvert er LineService DynamoGroupRep ository use use use IHttpRequestHandler LambdaHttpReque stHandler ハンドラーは実行環境に対するエンドポイントの提供と、各サービスのDIのみ行う
IImageConverter IImageStorage IGroupRepository LineNotifyMesse ngerApp S3ImageStorage JimpImageConvert er LineService DynamoGroupRep ository use use use IHttpRequestHandler LambdaHttpReque stHandler ビジネスロジックは、純粋なロジックのみで特定の環境に依存しない
IImageConverter IImageStorage IGroupRepository LineNotifyMesse ngerApp S3ImageStorage JimpImageConvert er LineService DynamoGroupRep ository use use use IHttpRequestHandler LambdaHttpReque stHandler LINE Messaging APIとやり取りするサービスクラスはLINE Messaging APIにのみ依存する
IImageConverter IImageStorage IGroupRepository LineNotifyMesse ngerApp S3ImageStorage JimpImageConvert er LineService DynamoGroupRep ository use use use IHttpRequestHandler LambdaHttpReque stHandler ビジネスロジックは抽象化したインターフェースを介して環境に依存する処理を呼び出す
IImageConverter IImageStorage IGroupRepository LineNotifyMesse ngerApp S3ImageStorage JimpImageConvert er LineService DynamoGroupRep ository use use use IHttpRequestHandler LambdaHttpReque stHandler 環境に依存する処理は各サービスクラスがインターフェースを実装する
IImageConverter IImageStorage IGroupRepository LineNotifyMesse ngerApp S3ImageStorage JimpImageConvert er LineService DynamoGroupRep ository use use use IHttpRequestHandler LambdaHttpReque stHandler つまり、別の環境で動かす場合は環境依存の部分だけを修正(別途実装/DI)すればよく、
IImageConverter IImageStorage IGroupRepository LineNotifyMesse ngerApp S3ImageStorage JimpImageConvert er LineService DynamoGroupRep ository use use use IHttpRequestHandler LambdaHttpReque stHandler コアロジックには一切の変更が不要
Functions HttpTrigger handler IImageConverter IImageStorage IGroupRepository LineNotifyMesse ngerApp BlobImageStorage JimpImageConvert er LineService TableStorageGroup Repository use use use IHttpRequestHandler FunctionsHttpRequ estHandler
handler IImageConverter IImageStorage IGroupRepository LineNotifyMesse ngerApp R2ImageStorage JimpImageConvert er LineService KVGroupRepository use use use IHttpRequestHandler CloudflareHttpRequ estHandler
S3/Blob Storageの処理に合わせて「画像をアップロードした ら念の為に自分自身のURL叩いて取得できるか確認」という処 理を入れてた • 画像の取得を https://{workersのURL}/images でworkersから返すよ うにしている • Cloudflare workersだとエラーになる • workersからworkersを取得できないという制限があるから • 再帰呼び出しでの無限ループを避けるためと思われる • https://developers.cloudflare.com/workers/platform/limits/#work er-to-worker-subrequests • If you attempt to use global fetch() to make a subrequest to another Worker on your account that runs on the same zone, without service bindings, the request will fail.