Swagger UI未加载,Json正在按预期加载,但受支持的js,css文件存在问题。
答案 0 :(得分:1)
尝试在项目内部的 vendor / swagger-api / swagger-ui 中复制/ dist目录。我不确定正确的方法,但是我遇到了同样的问题,它对我有用。另外,请尝试提供您所面临问题的更多详细信息,也许还提供代码段。 或者,尝试以下操作:
答案 1 :(得分:1)
此问题背后的原因,您需要执行以下步骤:
在Startup.cs文件下,有一个方法“ ConfigureServices”在其中执行以下操作:
http://localhost:8080/admin/levels?page=0&size=10{&sort}
然后在同一Startup.cs文件下的Configure方法下,添加以下代码
function example_form_alter(&$form, \Drupal\Core\Form\FormStateInterface $form_state, $form_id){
switch ($form_id) {
case 'example_form':
$states = [];
$vid = 'states';
$terms = \Drupal::entityTypeManager()->getStorage('taxonomy_term')->loadTree($vid, 0, NULL, FALSE);
foreach ($terms as $term) {
if ($term->depth == 0)
$states[$term->tid] = $term->name;
}
$form['states'] = [
'#title' => t('States'),
'#type' => 'select',
'#options' => $states,
'#required' => TRUE,
'#ajax' => [
'callback' => 'getCityList',
'event' => 'change',
'wrapper' => ['autocomplete_city_container'],
'method' => 'replace',
'effect' => 'slide',
'progress' => [
'type' => 'throbber',
'message' => t('Fetching city...'),
],
]
];
$form['city_alter'] = [
'#type' => 'container',
'#attributes' => ['id' => ['autocomplete_city_container']],
];
$form['city_alter']['city'] = array(
'#title' => t('City'),
'#type' => 'select',
'#required' => TRUE,
'#options' => [],
);
if (!empty($form_state->getValue('states'))) {
$cities = [];
$stateTid = $form_state->getValue('states');
$vid = 'city';
$terms = \Drupal::entityTypeManager()->getStorage('taxonomy_term')->loadTree($vid, $stateTid, NULL, FALSE);
foreach ($terms as $term) {
$cities[$term->tid] = $term->name;
}
$form['city_alter']['city'] = array(
'#title' => t('Size'),
'#type' => 'select',
'#required' => TRUE,
'#options' => $cities,
);
}
break;
}
}
function getCityList(array &$form, FormStateInterface $form_state) {
return $form['city_alter'];
}
谢谢。
答案 2 :(得分:0)
您是否在启动时启用了StaticFiles?
app.UseStaticFiles();
答案 3 :(得分:0)
我遇到了同样的问题:Swagger在本地工作得很好,但是一旦发布到IIS,就不会显示UI。通过添加IIS的请求筛选功能所允许的.js
和.json
文件来解决此问题。默认情况下,新创建的网站未在其中列出这些文件。
答案 4 :(得分:0)
尝试删除.vs文件夹,Visual Studio在构建项目时会自动再次创建它。 Swagger Page删除后即可工作。
根据泰勒·芬德利的答案。 https://stackoverflow.com/a/50629590/9705947
答案 5 :(得分:0)
我一直在关注 msdoc 上的原始 guide 试图启用 swagger 支持,在使用 RoutePrefix 添加此块后,我没有意识到路径从 http://localhost:<port>/swagger
更改为http://localhost:<port>
,感谢 Sampat 指出。
app.UseSwaggerUI(c =>
{
c.SwaggerEndpoint("/swagger/v1/swagger.json", "My API V1");
c.RoutePrefix = string.Empty; // this changes the default path
});