URI-Template (RFC 6570) tarafından tanımlanan şekilde bir URI'de parametre değerlerini ayıklamak için Java bağımsız bir uygulaması var mı? Handy-URI ŞablonlarBağımsız Java Uygulama URI Şablonu (RFC 6570) değerlerini ayıklamak için?
Bu parametre ile bir URI Şablon çözünürlüğünü destekler:
buldum iyi uygulama bir Java uygulaması bulunan bir yakut uygulama (https://github.com/sporkmonger/addressable)
Via http://code.google.com/p/uri-templates/wiki/Implementations olduğunu nihai URI'ye değerler. Ne yazık ki, tersi yapamaz: URI-Template'e göre URI'de parametre değerlerinin çıkarılması.
JAX-RS'nin (veya Restlet) implentasyonları dahili olarak bu özelliğe sahiptir. Fakat hiçbiri bağımsız olarak kullanılabilecek bu özellik modülünü izole etmiş gibi görünmüyor.
Başka bir fikri olan var mı? İşte
bir örnek yay Web Kullanılır: arayüz ile
import com.sun.jersey.api.uri.UriTemplate;
public class UriParserJerseyImpl implements UriParser {
private final UriTemplate uriTemplate;
private final Map<String, String> valuesMaps;
public UriParserJerseyImpl(final String template) {
this.uriTemplate = new UriTemplate(template);
final Map<String, String> valuesMaps = new HashMap<String, String>();
for (final String prop : this.uriTemplate.getTemplateVariables()) {
valuesMaps.put(prop, null);
}
this.valuesMaps = Collections.unmodifiableMap(valuesMaps);
}
@Override
public Map<String, String> parse(final String uri) {
final Map<String, String> values = new HashMap<String, String>(this.valuesMaps);
final boolean match = this.uriTemplate.match(uri, values);
if (!match) {
return null;
}
return values;
}
@Override
public Set<String> getVariables() {
return this.valuesMaps.keySet();
}
}
:
public interface UriParser {
public Set<String> getVariables();
public Map<String, String> parse(final String uri);
}
Jersey (JAX-RS uygulama) için
import org.springframework.web.util.UriTemplate;
public class UriParserSpringImpl implements UriParser {
private final UriTemplate uriTemplate;
private final String uriTemplateStr;
public UriParserSpringImpl(final String template) {
this.uriTemplateStr = template;
this.uriTemplate = new UriTemplate(template);
}
@Override
public Map<String, String> parse(final String uri) {
final boolean match = this.uriTemplate.matches(uri);
if (!match) {
return null;
}
return uriUtils.decodeParams(this.uriTemplate.match(uri));
}
@Override
public Set<String> getVariables() {
return Collections.unmodifiableSet(new LinkedHashSet<String>(this.uriTemplate.getVariableNames()));
}
}
Başka
Hiç bir çözüm buldunuz mu? Ben tam olarak aynı arıyorum ama kendi uygulama getirmek zorunda gibi görünüyor ... –
Muhtemelen benzer işlevselliğe sahip Google http istemcisi bakabilir. Bkz. Https://code.google.com/p/google-http-java-client/ – sappenin