আমি স্প্রিং বুট সংস্করণ errorAttributes.getErrorAttributes()
২.১.২ ব্যবহার করছি এবং স্বাক্ষরটি আমার পক্ষে কার্যকর হয়নি (আকোহানের প্রতিক্রিয়াতে)। আমি একটি জেএসএন টাইপের প্রতিক্রিয়া চেয়েছিলাম তাই আমি কিছুটা খনন করেছিলাম এবং এই পদ্ধতিটি আমার প্রয়োজন মতো ঠিকঠাক করেছে।
আমি আমার বেশিরভাগ তথ্য এই থ্রেডের পাশাপাশি এই ব্লগ পোস্টটি থেকে পেয়েছি ।
প্রথমত, আমি একটি তৈরি করেছি CustomErrorController
যা কোনও ত্রুটি মানচিত্রের জন্য স্প্রিংয়ের সন্ধান করবে।
package com.example.error;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.web.servlet.error.ErrorAttributes;
import org.springframework.boot.web.servlet.error.ErrorController;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.context.request.WebRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.HashMap;
import java.util.Map;
@RestController
public class CustomErrorController implements ErrorController {
private static final String PATH = "error";
@Value("${debug}")
private boolean debug;
@Autowired
private ErrorAttributes errorAttributes;
@RequestMapping(PATH)
@ResponseBody
public CustomHttpErrorResponse error(WebRequest request, HttpServletResponse response) {
return new CustomHttpErrorResponse(response.getStatus(), getErrorAttributes(request));
}
public void setErrorAttributes(ErrorAttributes errorAttributes) {
this.errorAttributes = errorAttributes;
}
@Override
public String getErrorPath() {
return PATH;
}
private Map<String, Object> getErrorAttributes(WebRequest request) {
Map<String, Object> map = new HashMap<>();
map.putAll(this.errorAttributes.getErrorAttributes(request, this.debug));
return map;
}
}
দ্বিতীয়ত, আমি CustomHttpErrorResponse
JSON হিসাবে ত্রুটি ফিরিয়ে দেওয়ার জন্য একটি শ্রেণী তৈরি করেছি ।
package com.example.error;
import java.util.Map;
public class CustomHttpErrorResponse {
private Integer status;
private String path;
private String errorMessage;
private String timeStamp;
private String trace;
public CustomHttpErrorResponse(int status, Map<String, Object> errorAttributes) {
this.setStatus(status);
this.setPath((String) errorAttributes.get("path"));
this.setErrorMessage((String) errorAttributes.get("message"));
this.setTimeStamp(errorAttributes.get("timestamp").toString());
this.setTrace((String) errorAttributes.get("trace"));
}
// getters and setters
}
শেষ অবধি, আমাকে application.properties
ফাইলটিতে হোয়াইটবেল বন্ধ করতে হয়েছিল ।
server.error.whitelabel.enabled=false
এটি xml
অনুরোধ / প্রতিক্রিয়াগুলির জন্যও কাজ করা উচিত । তবে আমি এটি পরীক্ষা করিনি। আমি একটি রেস্টস্টুল এপিআই তৈরি করছিলাম এবং এটি কেবল জেএসএনকেই ফিরিয়ে দিতে চেয়েছিলাম ঠিক সেটাই করেছিল did