[英]Best way to setup Spring Boot + Angular to communicate with Facebook Marketing API
我正在开发 Spring Boot 后端并使用 Facebook 营销 SDK。 在前端,我有 Angular 10。如果我创建了一个页面或一个活动,我想将对象返回到我的前端应用程序,并且在那里我需要根据打字稿类与活动的所有属性。
我尝试了 Habarta 的 typescript-generator,但 Facebook java 类很复杂,在生成过程中我得到了相互矛盾的结果。 例如:
Parsing 'com.facebook.ads.sdk.ProductFeedRuleSuggestion' used in 'APIRequestGetSuggestedRules.lastResponse'
Warning: Multiple classes are mapped to 'APIRequestGetActivities' name. Conflicting classes: [class com.facebook.ads.sdk.AdAccount$APIRequestGetActivities, class com.facebook.ads.sdk.AdSet$APIRequestGetActivities]
...
[ERROR] Failed to execute goal cz.habarta.typescript-generator:typescript-generator-maven-plugin:2.25.695:generate (default-cli) on project simplephy: Execution default-cli of goal cz.habarta.typescript-generator:typescript-generator-maven-plugin:2.25.695:generate failed: Multiple classes are mapped to the same name. You can use 'customTypeNaming' or 'customTypeNamingFunction' settings to resolve conflicts or exclude conflicting class if it was added accidentally.
我的插件设置:
<plugin>
<groupId>cz.habarta.typescript-generator</groupId>
<artifactId>typescript-generator-maven-plugin</artifactId>
<version>2.25.695</version>
<executions>
<execution>
<id>generate</id>
<goals>
<goal>generate</goal>
</goals>
<phase>process-classes</phase>
</execution>
</executions>
<configuration>
<jsonLibrary>jackson2</jsonLibrary>
<mapClasses>asClasses</mapClasses>
<classes>
<class>com.facebook.ads.sdk.Campaign</class>
</classes>
<excludeClasses>
<excludeClass>com.facebook.ads.sdk.APINode</excludeClass>
</excludeClasses>
<outputKind>module</outputKind>
<outputFileType>implementationFile</outputFileType>
</configuration>
</plugin>
从 Facebook java 对象生成所有必要的打字稿类的合适方法是什么? 或者有没有更好的方法在后端和前端之间发送这些 fb 对象?
例如,您需要编写 customTypeNamingFunction
<customTypeNamingFunction>
function(name, simpleName) {
<!-- DUPLICATES THAT HAVE TO BE RENAMED -->
var duplicates = ['class', 'names', 'duplicated'];
if (name.indexOf('$') !== -1) {
var parent = name.split('$')[0];
var parentParts = parent.split('.');
return parentParts[parentParts.length-1]+simpleName;
}
if (duplicates.indexOf(simpleName) !== -1) {
var parts = name.split('.');
var caps = parts[parts.length-2][0].toUpperCase() + parts[parts.length-2].slice(1);
return caps+parts[parts.length-1];
}
}
</customTypeNamingFunction>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.