मेरे स्प्रिंग बूट ऐप में, मेरे पास /api/**
पर एंडपॉइंट्स का गुच्छा है। निम्नलिखित मेरी अनुप्रयोग विन्यास है:एपीआई कॉल से ब्राउज़र आगंतुकों को अंतराल पर
@Configuration
public class AppConfig extends WebMvcConfigurerAdapter {
private class PushStateResourceResolver implements ResourceResolver {
private Resource index = new ClassPathResource("/public/index.html");
private List<String> handledExtensions = Arrays.asList("html", "js",
"json", "csv", "css", "png", "svg", "eot", "ttf", "woff",
"appcache", "jpg", "jpeg", "gif", "ico");
private List<String> ignoredPaths = Arrays.asList("^api\\/.*$");
@Override
public Resource resolveResource(HttpServletRequest request,
String requestPath, List<? extends Resource> locations,
ResourceResolverChain chain) {
return resolve(requestPath, locations);
}
@Override
public String resolveUrlPath(String resourcePath,
List<? extends Resource> locations, ResourceResolverChain chain) {
Resource resolvedResource = resolve(resourcePath, locations);
if (resolvedResource == null) {
return null;
}
try {
return resolvedResource.getURL().toString();
} catch (IOException e) {
return resolvedResource.getFilename();
}
}
private Resource resolve(String requestPath,
List<? extends Resource> locations) {
if (isIgnored(requestPath)) {
return null;
}
if (isHandled(requestPath)) {
return locations
.stream()
.map(loc -> createRelative(loc, requestPath))
.filter(resource -> resource != null
&& resource.exists()).findFirst()
.orElseGet(null);
}
return index;
}
private Resource createRelative(Resource resource, String relativePath) {
try {
return resource.createRelative(relativePath);
} catch (IOException e) {
return null;
}
}
private boolean isIgnored(String path) {
return false;
// return !ignoredPaths.stream().noneMatch(rgx -> Pattern.matches(rgx, path));
//deliberately made this change for examining the code
}
private boolean isHandled(String path) {
String extension = StringUtils.getFilenameExtension(path);
return handledExtensions.stream().anyMatch(
ext -> ext.equals(extension));
}
}
}
/api/**
पीछे अंतिमबिंदुओं के लिए उपयोग, प्रमाणीकृत करने इसलिए जब मैं ब्राउज़र में /api/my_endpoint
में टाइप करें, मैं त्रुटि वापस पाने, जो मैं क्या नहीं है चेक किया गया है चाहते हैं। मैं चाहता हूं कि उपयोगकर्ता index.html
के साथ सेवा करें।
आप सभी अनुरोधों के लिए एक इंटरसेप्टर या फ़िल्टर का उपयोग कर सकते हैं, और प्रतिक्रिया और पथ की जांच कर सकते हैं और इसके अनुसार कार्य नहीं कर सकते हैं? – DvTr