Qiitaに投稿した記事のリンクを楽にWordPressに送りたい #4

#シリーズ
[Qiitaに投稿した記事のリンクを楽にWordPressに送りたい #1](https://qiita.com/GodPhwng/items/d987e8d5af11fb4b7411)
[Qiitaに投稿した記事のリンクを楽にWordPressに送りたい #2](https://qiita.com/GodPhwng/items/8de81c46a3a01f53d4b5)
[Qiitaに投稿した記事のリンクを楽にWordPressに送りたい #3](https://qiita.com/GodPhwng/items/c41facd5fef42fec7f47)

#環境
**IDE**：VisualStudio2019
**アプリケーション**：ASP.Net Core WebAPI
**フレームワーク**：.NET Core 3.1

#Webアプリに移行する
[前回](https://qiita.com/GodPhwng/items/c41facd5fef42fec7f47)の続きになります。

\#3で作成したコンソールアプリの処理をWebAPI側から呼び出してみたいと思います。

#設計
ASP.NET CoreでWebAPIを作成
↓
「\#3で作成した処理」を呼び出す処理を実装
↓
その処理をブックマークレットから呼び出す

#ASP.NET Core
Visual Studio のテンプレートから作成します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/526982/61a11af9-cde6-7234-e420-c8825e93a6d6.png)

デフォルトで作成されるWeatherForcastのクラス等はQiita2WPWebに書き換えました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/526982/5908b7ed-8098-407a-9130-06b3f61407d5.png)

**launchSettings.json**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/526982/e37a7958-6b09-8bad-048a-4cfb3c021273.png)


**プロジェクトの参照を追加します**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/526982/a9471be2-d0e6-cdc8-f8e7-ca5e131cdf27.png)

**コントローラーの実装**

```C#
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging;
using System.Threading.Tasks;
using TestProject.QiitaToWP;

namespace TestProject.QiitaToWPWeb.Controllers
{
    [ApiController]
    [Route("[controller]/[action]")]
    public class Qiita2WPWebController : ControllerBase
    {
        private readonly ILogger<Qiita2WPWebController> _logger;

        public Qiita2WPWebController(ILogger<Qiita2WPWebController> logger)
        {
            _logger = logger;
        }

        [HttpGet]
        public IActionResult Get()
        {
            return Ok();
        }

        [HttpPost]
        public async Task<IActionResult> Post()
        {
            var q2wp = new Qiita2WP();

            // Qiita2WPプロジェクトの方の処理を使いまわす
            await q2wp.Qiita2WPArticle();            

            return Ok();
        }
    }
}
```

```
Route
```
の説明については以下が参考になりました。
[ASP.NET Core でのコントローラー アクションへのルーティング](https://docs.microsoft.com/ja-jp/aspnet/core/mvc/controllers/routing?view=aspnetcore-3.1)

#WebAPIをブックマークレットから呼び出す。
以下の処理をブックマークレットで行います。

```JavaScript
var xhr=new XMLHttpRequest();
xhr.open("POST","https://localhost:5001/qiita2wpweb/post", true);
xhr.onreadystatechange = function()
{
    if (this.readyState==4) {
        alert("リクエスト完了");
    }
};
xhr.send(null);
```

**1行バージョン**

```JavaScript
javascript:var xhr=new XMLHttpRequest();xhr.open("POST","https://localhost:5001/qiita2wpweb/post");xhr.onreadystatechange=function(){if(this.readyState==4){alert("リクエスト完了");}};xhr.send(null);
```

**以下のようにブックマークレットを追加します。**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/526982/50ecace5-df22-a3e8-5b5b-2280ac0ac0e3.png)

#実行確認
Webアプリを実行します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/526982/77be361d-0229-b971-5c80-0390d5750fcc.png)
**緑の▲ボタン**

Wp側の記事を空にしておきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/526982/d4660857-455c-bca0-bbc2-67f82df3009a.png)

ブックマークレットをクリックします。

**実行後**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/526982/0f0551e5-3ffa-678c-62bf-897b9eefe9b5.png)

Postが行えたかどうか。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/526982/e70202cb-bdc7-e5ce-f02c-f311f9ff3fbe.png)

**WPの記事**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/526982/cea3e50b-8423-9949-5d25-7563c0f2e9a6.png)

**追加されたことが確認できました。**

#GitHub
[TestProject](https://github.com/GodPhwng/TestProject)


[次回](https://qiita.com/GodPhwng/items/3f956d42fa703730300b)はDockerに乗せられるか試します。