1
有什麼辦法可以選擇最好的Accept
mimetype進行圖像處理嗎?JAX-RS如何選擇圖像mimetype?
我有一個資源看起來像這樣。
@GET
@Produces({"image/jpeg", "image/png"})
public Response readResizedImage(
@Context Request request,
@Context HttpHeaders httpHeaders,
@QueryParam("width") final int width,
@QueryParam("height") final int height) {
final List<Variant> variants = Variant.mediaTypes(
new MediaType("image", "jpeg"), new MediaType("image", "png")).build();
// Why on earth variants is empty?
if (!variants.isEmpty()) {
final Variant variant = request.selectVariant(variants);
LOGGER.log(Level.INFO, "{0}", variant.getMediaType().toString());
}
final List<MediaType> acceptableMediaTypes =
httpHeaders.getAcceptableMediaTypes();
for (MediaType acceptableMediaType : acceptableMediaTypes) {
LOGGER.log(Level.INFO, "acceptableMediaType:{0}/{1}",
new Object[]{acceptableMediaType.getType(),
acceptableMediaType.getSubtype()});
}
return null;
}
我用下面的命令試過這個資源。
$ curl -v -H "Accept: */*" \
-H "Accept: image/*;q=0.2" \
-H "Accept: image/jpeg;q=0.5" \
-H "Accept: image/png;q=1.0" \
http://.............
和服務器打印
acceptableMediaType:image/png
acceptableMediaType:*/*
acceptableMediaType:image/jpeg
acceptableMediaType:image/*
問題:
如何選擇正確的(不是通配符)MIME類型?
我必須有一個用於處理圖像字節重新調整大小。
你能給出一個鏈接來解釋這個選擇是如何工作的嗎? – kommradHomer
請參閱JAX-RS規範(http://jcp.org/aboutJava/communityprocess/edr/jsr339/index3.html)第3.8節 –